#include <QMessageBox>
#include "LogonWindow.h"
#include "Protocol.h"
#include "ui_LogonWindow.h"

/**
 * 构造方法。
 * @param parent    父窗口
 */
LogonWindow::LogonWindow(QWidget* parent) :
    QDialog(parent),
    ui(new Ui::LogonWindow),
    mClickedButton(CANCEL) {
    ui->setupUi(this);

    // 设置最大用户名长度和最大密码长度
    ui->editUsername->setMaxLength(ImProtocol::MAX_USERNAME_LEN);
    ui->editPassword->setMaxLength(ImProtocol::PASSWORD_BUF_LEN);
}

/**
 * 析构方法。
 */
LogonWindow::~LogonWindow() {
    delete ui;
}

/**
 * 获取密码。
 * @return 密码
 */
const char* LogonWindow::getPassword() {
    return mPassword.toStdString().c_str();
}

/**
 * 获取用户名。
 * @return 用户名
 */
const char* LogonWindow::getUsername() {
    return mUsername.toStdString().c_str();
}

/**
 * "取消"按钮单击响应方法。
 */
void LogonWindow::on_buttonCancel_clicked() {
    QDialog::reject();
}

/**
 * "确定"按钮的单击响应方法。
 */
void LogonWindow::on_buttonOK_clicked() {
    // 检查用户名是否为空
    QString username(ui->editUsername->text());
    if (username.isEmpty()) {
        QMessageBox::critical(this, " ", tr("IDS_USERNAME_EMPTY"));
        ui->editUsername->setFocus();
        return;
    }

    // 检查密码是否为空
    QString password(ui->editPassword->text());
    if (password.isEmpty()) {
        QMessageBox::critical(this, " ", tr("IDS_PASSWORD_EMPTY"));
        ui->editPassword->setFocus();
        return;
    }

    // 保存用户名、密码
    mUsername = username;
    mPassword = password;

    // 关闭窗口
    mClickedButton = OK;
    QDialog::done(mClickedButton);
}
